
/***js 通过任意属性删除DOM元素BEGIN******/
images = document.images; // document.getElementsByTagName("img");
for(i=0; i<images.length; i++) {
    if(images[i].src == "http://imgf2d.yingshengyl.com/templates/frontend/frontend-jiucao/ps/1565858951238953058.gif") {
        console.log(images[i].alt);
        break;
    }
}
//images[i].remove();
images[i].parentNode.removeChild(images[i]);
//JS 删除DOM元素
var divs = document.getElementsByTagName("div");
var objRegExp= /^ps_\d+$/;
for(i=0; i<divs.length; i++) {
    if(objRegExp.test(divs[i].className)) {
        divs[i].parentNode.removeChild(divs[i]);
}
/***js 通过任意属性删除DOM元素END******/
/****js new BEGIN*********/
function fn()  
{  
    this.user = '追梦子';  
}
var a = new fn();  
alert(a.user); //追梦子
//------------
//返回值为对象则覆盖通过this创建的对象
function fn()
{
    this.user = '追梦子';
    return {}; //空对象
}
var a = new fn(); //a ---> {}
alert(a.user); //undefined
//函数也可看作对象
function fn()  
{  
    this.user = '追梦子';  
    return function(){}; 
}
var a = new fn;  
alert(a.user); //undefined
typeof(a); //functison
//非对象返回值不影响构造函数
function fn()  
{  
    this.user = '追梦子';  
    return 1;
}
var a = new fn;  
alert(a.user); //追梦子
//返回 null 和 undefined 都不影响new
function fn()  
{  
    this.user = '追梦子';  
    return undefined;
}
var a = new fn;  
alert(a.user); //追梦子
function fn()  
{  
    this.user = '追梦子';  
    return null;
}
var a = new fn;  
alert(a.user); //追梦子
/****js new END*********/
/****js 修改this指向BEGIN*****/
var a = {
    user:"追梦子",
    fn:function(){
        console.log(this.user); 
    }
}
var b = a.fn;
b.call(a); //追梦子
/****js 修改this指向 END*****/
/****js 闭包 BEGIN*****/
function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
        alert(n);
    }
    return f2;
}
var result=f1(); //n, nAdd, f2实例化一次, nAdd指向一个匿名函数
result(); // 999 
nAdd(); 
result(); // 1000
result = f1(); //重新实例化
result(); // 999
nAdd(); //指向另一个实例化的匿名函数
result(); // 1000
/****js 闭包END*****/

/*****运算符示例BEGIN*********/
function Constructor() {
    this.name = 'test';
}
var obj = new Constructor;
obj instanceof obj.constructor;
obj instanceof Constructor;
'a'.constructor === String; //true
'a' instanceof 'a'.constructor; //false
var x = 'a';
x instanceof x.constructor; //false
x = new String();
x instanceof x.constructor; //true;
//位移运算
(-1) >> 1; // -1
(-1) >>> 1; //2**31-1
(-1) << 1; // -2 
/*****运算符示例END*********/
/******JS 异常BEGIN******/
var num = 1;
try {
  num.toPrecision(500);
}catch(err) {
    console.log( "typeof err: " + typeof(err) +  '\n' +
        "err: " + err + '\n' +
        "err.name: " + err.name + '\n' +
        "err.message: " + err.message
    );
}finally {
    //无论 try / catch 结果如何都执行的代码块
    console.log("Finally forever");
}
//自定义异常
try {
    throw "a throw err!";
}catch(error) {
    console.log(
        "error: " + error + '\n' +
        "typeof error: " + typeof error
    );
}
/******JS 异常END******/
/******JS 严格模式BEGIN******/
"use strict"; 
//整个脚本使用全局模式
//...
//仅在特定函数中使用严格模式
x = 3.14;       // 这不会引发错误
myFunction();
function  myFunction() {
    "use strict";
     y = 3.14;   // 这会引发错误
}
/******JS 严格模式END******/

